using System;
using Abp.Application.Services;
using System.Collections.Generic;
using System.Threading.Tasks;
using Enterprise.Entities.Dtos;
using HCD.Project.Dtos;
using HCD.Entities.Dtos;
using HCD.Dtos;
using Abp.Application.Services.Dto;
using Microsoft.AspNetCore.Mvc;

namespace HCD.Project
{
    /// <summary>
    /// PeojectPersonal应用层服务的接口方法
    ///</summary>
    public interface IProjectAppService : IApplicationService
    {
        /// <summary>
        /// 保存个人项目经验
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<ProjectPersonalEditDto> SaveProjectPersonal(ProjectPersonalEditDto input);
        /// <summary>
        /// 删除个人项目经验
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<bool> DelProjectPersonal(int id);
        /// <summary>
        /// 获取个人项目列表
        ///</summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<ProjectPersonalListDto>> GetProjectPersonal(GetProjectPersonalInput input);
        /// <summary>
        /// 获取人力资源池
        /// </summary>
        /// <returns></returns>
        Task<List<OperatorPoolListDto>> GetOperatorPool();
        /// <summary>
        /// 获取项目资源池
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<ProjectPoolListDto>> GetProjectPool(PagedAndSortedInputDto input);
        /// <summary>
        /// 获取需求资源池
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<RequirementPoolListDto>> GetRquirementPool(PagedAndSortedInputDto input);
        /// <summary>
        /// 获取个人发布的需求列表
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<List<GetMyRequirementListDto>> GetMyRequirement(Guid id);
        /// <summary>
        /// 发布个人需求
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<ProjectPersonalEditDto> SaveMyRequirement(RequirementEditDto input);
        /// <summary>
        /// 获取个人组建的项目团队
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<List<ProjectTeamEditDto>> GetMyProjectTeam(Guid id);
        /// <summary>
        /// 组建项目团队
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<bool> SaveMyProjectTeam(ProjectTeamEditDto input);
        /// <summary>
        /// 获取我参与的所有团队项目
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        Task<List<ProjectTeamListDto>> GetMyJoinProjectTeam(Guid id);
    }
}
